home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / esc.jar / com / extensibility / xa / ErrorPane.class (.txt) < prev    next >
Encoding:
Java Class File  |  2000-06-30  |  6.8 KB  |  182 lines

  1. package com.extensibility.xa;
  2.  
  3. import com.extensibility.app.BaseDocument;
  4. import com.extensibility.app.UI;
  5. import com.extensibility.rock.RBevelBorder;
  6. import com.extensibility.rock.RButton;
  7. import com.extensibility.xml.BaseDeclaration;
  8. import com.extensibility.xml.ParserException;
  9. import java.awt.BorderLayout;
  10. import java.text.MessageFormat;
  11. import java.util.Enumeration;
  12. import java.util.Vector;
  13. import javax.swing.JComponent;
  14. import javax.swing.JLabel;
  15. import javax.swing.JList;
  16. import javax.swing.JPanel;
  17. import javax.swing.JScrollPane;
  18. import javax.swing.JSplitPane;
  19. import javax.swing.JTextArea;
  20. import javax.swing.event.ListSelectionListener;
  21.  
  22. public class ErrorPane extends CompositePane {
  23.    static final String LARGE_STRING = ">< >< >< >< >< >< >< >< >< >< >< >< >< >< >< >< >< >< >< >< >< >< >< >< >< >< ";
  24.    static final String WRITE_BREAK = ">< >< >< >< >< >< >< >< >< >< >< >< >< >< >< >< >< >< >< >< >< >< >< >< >< >< ";
  25.    JScrollPane scroller;
  26.    JList list;
  27.    Vector errors;
  28.    Vector decls;
  29.    JSplitPane split;
  30.    JTextArea details;
  31.    JPanel panel;
  32.    SchemaDoc inDoc;
  33.    int declErrCount;
  34.    int parserErrCount;
  35.    ListSelectionListener selListener;
  36.    JLabel lblErrors;
  37.    JComponent hdrButtons;
  38.    CheckErrAction checkErrAction = new CheckErrAction(this);
  39.    static final MessageFormat mf1 = new MessageFormat(UI.getString("err.encounter.pe"));
  40.    static final MessageFormat mf2 = new MessageFormat(UI.getString("err.encounter.uri"));
  41.    static final MessageFormat mf3 = new MessageFormat(UI.getString("err.encounter.pe.within"));
  42.    static final MessageFormat mf4 = new MessageFormat(UI.getString("err.encounter.uri.within"));
  43.  
  44.    public static boolean available(SchemaDoc var0) {
  45.       return !var0.getParseErrors().isEmpty();
  46.    }
  47.  
  48.    public JComponent getComponent() {
  49.       return this.panel;
  50.    }
  51.  
  52.    protected JComponent createHeaderButtons() {
  53.       return new RButton(this.checkErrAction);
  54.    }
  55.  
  56.    public ErrorPane(SchemaDoc var1) {
  57.       super(var1);
  58.       this.inDoc = var1;
  59.       this.lblErrors = new JLabel();
  60.       this.hdrButtons = this.createHeaderButtons();
  61.       this.panel = new JPanel(new BorderLayout());
  62.       this.panel.setBorder(new RBevelBorder(1));
  63.       this.details = new JTextArea();
  64.       this.details.setEditable(false);
  65.       this.details.setLineWrap(true);
  66.       this.details.setWrapStyleWord(true);
  67.       this.list = new JList();
  68.       this.list.setCellRenderer(new ErrorCell(((BaseDocument)var1).getURI()));
  69.       JScrollPane var2 = new JScrollPane(this.list);
  70.       CompositePane.setHeader(var2, this.lblErrors, this.hdrButtons);
  71.       this.panel.add(var2, "Center");
  72.       this.resetErrors();
  73.       this.list.setSelectedIndex(0);
  74.       this.list.requestFocus();
  75.    }
  76.  
  77.    public void resetErrors() {
  78.       this.errors = new Vector();
  79.       Vector var1 = this.inDoc.getParseErrors();
  80.  
  81.       for(int var2 = 0; var2 < var1.size(); ++var2) {
  82.          this.errors.addElement(var1.elementAt(var2));
  83.       }
  84.  
  85.       this.decls = new Vector();
  86.       this.parserErrCount = this.errors.size();
  87.       this.decls.setSize(this.parserErrCount);
  88.       this.declErrCount = 0;
  89.       Enumeration var3 = this.inDoc.getDeclarations();
  90.  
  91.       while(var3.hasMoreElements()) {
  92.          BaseDeclaration var4 = (BaseDeclaration)var3.nextElement();
  93.          if (var4.hasErrors()) {
  94.             Vector var5 = var4.getErrors();
  95.  
  96.             for(int var6 = 0; var6 < var5.size(); ++var6) {
  97.                ++this.declErrCount;
  98.                this.decls.addElement(var4);
  99.                this.errors.addElement(var5.elementAt(var6));
  100.             }
  101.          }
  102.       }
  103.  
  104.       this.setErrors();
  105.       if (this.errors.size() == 0) {
  106.          ((CompositePane)this).getSchemaWin().hideErrorPane();
  107.       }
  108.  
  109.    }
  110.  
  111.    public void setErrors() {
  112.       if (this.selListener != null) {
  113.          this.list.removeListSelectionListener(this.selListener);
  114.          this.selListener = null;
  115.       }
  116.  
  117.       this.list.removeAll();
  118.       this.list.setListData(this.errors);
  119.       if (this.errors.size() > 0) {
  120.          this.selListener = new 1(this);
  121.          this.list.addListSelectionListener(this.selListener);
  122.       }
  123.  
  124.       this.list.invalidate();
  125.    }
  126.  
  127.    private void showError(ParserException var1, int var2) {
  128.       if (var1 != null && var2 != -1) {
  129.          BaseDeclaration var3 = (BaseDeclaration)this.decls.elementAt(var2);
  130.          if (var3 != null) {
  131.             XADesktop.selectDeclaration(var3, this.inDoc, false);
  132.          } else if (((CompositePane)this).getSchemaWin() != null) {
  133.             ((CompositePane)this).getSchemaWin().showFilePane(var1);
  134.          }
  135.  
  136.       }
  137.    }
  138.  
  139.    public String getClassName() {
  140.       return "com.extensibility.xa.ErrorPane";
  141.    }
  142.  
  143.    public String formatDetails(ParserException var1) {
  144.       StringBuffer var2 = new StringBuffer();
  145.       var2.append(var1.getMessage());
  146.       boolean var3 = true;
  147.       Enumeration var4 = var1.getContext();
  148.       var2.append(" ");
  149.  
  150.       while(var4.hasMoreElements()) {
  151.          ParserException.Context var5 = (ParserException.Context)var4.nextElement();
  152.          if (var3) {
  153.             if (var5.isInternal()) {
  154.                var2.append(mf1.format(new String[]{var5.getName()}));
  155.             } else if (!var5.getURI().hasPersistence()) {
  156.                var2.append(UI.getString("err.recurse", "pe."));
  157.             } else {
  158.                var2.append(mf2.format(new String[]{(new Integer(var5.getColumn())).toString(), (new Integer(var5.getLine())).toString(), var5.getURI().getFullName()}));
  159.             }
  160.  
  161.             var3 = false;
  162.          } else if (var5.isInternal()) {
  163.             var2.append(mf3.format(new String[]{var5.getName()}));
  164.          } else if (var5.getURI().hasPersistence()) {
  165.             String var6 = var5.getURI().getFullName();
  166.             var2.append(mf4.format(new String[]{(new Integer(var5.getLine())).toString(), var6}));
  167.          }
  168.       }
  169.  
  170.       var2.append(UI.getString("err.decl.source"));
  171.       var2.append(System.getProperty("line.separator"));
  172.       var2.append(System.getProperty("line.separator"));
  173.       var2.append(var1.getSource());
  174.       return var2.toString();
  175.    }
  176.  
  177.    // $FF: synthetic method
  178.    static void access$2000071(ErrorPane var0, ParserException var1, int var2) {
  179.       var0.showError(var1, var2);
  180.    }
  181. }
  182.